#include<my_header2.h>

#define LIST_SIZE 3

enum {
    FREE,
    BUSY
};

typedef struct status_s{
    pid_t id; // 记录子进程id
    int status; // 记录子进程状态
    int local_socket; // 记录用来和当前子进程进行通信的本地socket
} status_t;

// 用来初始化子进程们
// *list: 指向子线程状态结构体数组
// num: 要创建多少个子进程
int initPool(status_t *list, int num);

// 初始化监听的socket
int initSocket(int* socket_fd, char* ip, char* port);

// 把socket添加到epoll中监听
int addEpoll(int epoll_fd, int socket_fd);

// 把一个任务给空闲的子进程
int toList(status_t *list, int num, int net_fd);

// 把监听到的socket放到任务队列中
int worker(int local_socket);

// 监听本地socket中传过来的文件描述符,并赋给传入传出参数net_fd
int localRecvMsg(int local_socket, int * net_fd, int* flag);

// 将net_fd通过本地socket传给子进程
int localSendMsg(int local_socket, int net_fd, int flag);

// 用于给客户端发送文件
// net_fd: 子进程服务的那个
int sendFile(int net_fd);
